home *** CD-ROM | disk | FTP | other *** search
-
-
- L ZZZZZZ RRRRR SSSSS
- L Z R R S
- L aaa Z aaa R R u u S
- L a Z a RRRRR u u SSSSS
- XX L aaaa Z aaaa R R u u S
- XXXX L a a Z a a R R u u S
- XXXXXX LLLLLLL aaaaa ZZZZZZZ aaaaa R R uuuuu SSSSSS
- XXXXXX
- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- XXXXXX
- XXXXXX
- XXXX proudly presents his 25.Cracking Tutorial (24.07.1999)
- XX Solution to AfKayAs CrackMe #1
-
- I. Introduction
- II. The essay
- III. BTW
-
- I. Currently I am bored, my phone bill doesn't allow joining #cracking4newbies and looking TV
- would bore me even more, so I decided to make something useful. Went to Eternal Bliss'
- site (crackmes.cjb.net) and d/l some tutorials and CrackMes. Even more useful than just
- cracking this little baby, is writing a tut for EB. So, let's start:
-
- II. The essay
- I hope you read my "VB5 in W32Dasm" essay, because this one is VB and I am a
- W32Dasm-o-holic (I hope you know what that means :P). Yes, this time we will deal with
- my preferred disassembler again :)
- So load CrackMe1.exe in W32Dasm and search for "strc" (I always start like this; "strc" is
- a part of the function name __vbaStrCmp). You will find it three times, twice in the
- definition and list of all functions at the beginning of the file and one at the end of
- the file (where it is used). At the end you will see this:
-
- :00402525 8B1D70414000 mov ebx, dword ptr [00404170]
- :0040252B 8BD0 mov edx, eax
- :0040252D 8D4DE0 lea ecx, dword ptr [ebp-20]
- :00402530 FFD3 call ebx
- :00402532 50 push eax
-
- * Reference To: MSVBVM50.__vbaStrCmp, Ord:0000h
- |
- :00402533 FF1528414000 Call dword ptr [00404128]
-
- Strange: Only one PUSH in front of the call to __vbaStrComp? No, the other one (push eax)
- is located few lines above (:0040251C). This "push eax" contains the serial you entered
- and the "push eax" you can see in the code snippet contains the correct serial. So just
- read it out and you have cracked this babe :)
-
- For my name (LaZaRuS) it was: AKA-682793 - If you enter it a messagebox appears telling
- you that you found the correct serial, but you should keygen it, too. So I traced up
- seeing many function names I never heard of and then finally saw the light: __vbaLenBstr
- I thought that this one is a good starting position for a serial calculation. Why? I
- mostly start with getting the length of the name, too :) And - as you will see - I was
- right. So I set a breakpoint in front of the call (:00402412) and started debugging.
-
- * Referenced by a (U)nconditional or (C)onditional Jump at Address:
- |:004023F5(C)
- |
- :00402409 8B9550FFFFFF mov edx, dword ptr [ebp+FFFFFF50]
- :0040240F 8B45E4 mov eax, dword ptr [ebp-1C] ;; EAX = NAME
- :00402412 50 push eax ;; SAVE EAX TO STACK
- :00402413 8B1A mov ebx, dword ptr [edx]
-
- * Reference To: MSVBVM50.__vbaLenBstr, Ord:0000h
- |
- :00402415 FF15E4404000 Call dword ptr [004040E4] ;; RETURN LENGTH OF NAME IN EAX
- :0040241B 8BF8 mov edi, eax ;; EDI = LENGTH OF NAME
- :0040241D 8B4DE8 mov ecx, dword ptr [ebp-18] ;; ECX = NAME
- :00402420 69FFFB7C0100 imul edi, 00017CFB ;; MULTIPLY LENGTH WITH 17CFBh
- :00402426 51 push ecx
- :00402427 0F8091020000 jo 004026BE
-
- * Reference To: MSVBVM50.rtcAnsiValueBstr, Ord:0204h
- |
- :0040242D FF15F8404000 Call dword ptr [004040F8];;GET FIRST CHAR OF NAME (IN EAX)
- :00402433 0FBFD0 movsx edx, ax ;; EDX = FIRST CHAR
- :00402436 03FA add edi, edx ;; ADD ASCII(1st CHAR) TO LENGTH*17CFBh
-
- Yes, that's (nearly) all. Somewhere later you will see that the string "AKA-" is added in
- front of every serial.
-
- You will find the code for a keygen (MASM) inside the ZIP file.
-
- III. BTW
-
- Greets to: tKC, Ed!son, Moral Insanity and everyone at #cracking4newbies, +Sandman's forum
- and Fravia+'s forum.
-